home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d880.lha / Oberon / O3Demo2.lzh / Examples / Ahorn.mod < prev    next >
Text File  |  1993-01-15  |  1KB  |  45 lines

  1. MODULE Ahorn;
  2.  
  3. IMPORT XYplane, rn := Random;
  4.  
  5. TYPE
  6.   Table = ARRAY 4 OF RECORD
  7.                        x1,y1,x2,y2,e,f: LONGREAL;
  8.                        p: INTEGER;
  9.                      END;
  10.  
  11. CONST
  12. (* maple leaf: *)
  13.   X0 = 90;
  14.   Y0 = 0;
  15.   e  = 450;
  16.   tab = Table( 0.65D0,-0.013D0, 0.013D0, 0.65D0, 0.175D0, 0     , 30,
  17.                0.65D0, 0.026D0, 0.026D0, 0.65D0, 0.175D0, 0.35D0, 30,
  18.                0.32D0,-0.320D0, 0.320D0, 0.32D0, 0.200D0, 0     , 20,
  19.               -0.32D0, 0.320D0, 0.320D0, 0.32D0, 0.800D0, 0     , 20);
  20.  
  21.  
  22. VAR
  23.   x,y,X,Y: LONGREAL;
  24.   r,i: INTEGER;
  25.  
  26. BEGIN
  27.   X := X0; Y := Y0;
  28.   REPEAT
  29.     r := rn.RND(100);
  30.     i := 0;
  31.     WHILE (i<4) & (r>=0) DO
  32.       DEC(r,tab[i].p);
  33.       IF r<0 THEN
  34.         x := tab[i].x1*X + tab[i].y1*Y + tab[i].e;
  35.         y := tab[i].x2*X + tab[i].y2*Y + tab[i].f;
  36.         X := x;
  37.         Y := y;
  38.       END;
  39.       INC(i);
  40.     END;
  41.     XYplane.Dot(SHORT(ENTIER(e/1.2D0*X)),SHORT(ENTIER((e/2.5D0)*Y)),XYplane.draw);
  42.   UNTIL XYplane.Key()#0X;
  43. END Ahorn.
  44.  
  45.